package com.cencat.merchant.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 派单记录VO
 * 
 * @author cencat
 * @since 2024
 */
@Data
@Schema(description = "派单记录信息")
public class DispatchRecordVO {
    
    @Schema(description = "记录ID")
    private Long id;
    
    @Schema(description = "租户ID")
    private Long tenantId;
    
    @Schema(description = "派单编号")
    private String dispatchCode;
    
    @Schema(description = "订单ID")
    private Long orderId;
    
    @Schema(description = "订单编号")
    private String orderCode;
    
    @Schema(description = "司机ID")
    private Long driverId;
    
    @Schema(description = "司机姓名")
    private String driverName;
    
    @Schema(description = "司机手机号")
    private String driverPhone;
    
    @Schema(description = "商家ID")
    private Long merchantId;
    
    @Schema(description = "商家名称")
    private String merchantName;
    
    @Schema(description = "派单类型：1-手动派单，2-距离优先，3-评分优先，4-负载均衡，5-智能派单")
    private Integer dispatchType;
    
    @Schema(description = "派单状态：1-待接单，2-已接单，3-已拒绝，4-已取消，5-已完成")
    private Integer status;
    
    @Schema(description = "匹配度评分")
    private BigDecimal matchScore;
    
    @Schema(description = "距离（公里）")
    private BigDecimal distance;
    
    @Schema(description = "预计送达时间")
    private LocalDateTime estimatedArrivalTime;
    
    @Schema(description = "实际接单时间")
    private LocalDateTime acceptTime;
    
    @Schema(description = "拒绝原因")
    private String rejectReason;
    
    @Schema(description = "取消原因")
    private String cancelReason;
    
    @Schema(description = "备注")
    private String remark;
    
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    
    @Schema(description = "创建人")
    private String createBy;
    
    @Schema(description = "更新人")
    private String updateBy;
}